Skip to main content

Q & A

如果你有疑问的话,欢迎发送邮箱到 hello@interview-science.org

选择什么编程语言解题?

大部分情况下,面试官并不会限制你使用什么编程语言来解决问题。不过,为了让面试官更容易理解你的思路与代码,建议首选 Java,Python,C++ 来进行算法练习。Java 在大部分情况都是最通用的选择,Python 更简洁以及容易上手,C++ 效率最高。如果在面试的过程中,面试官要求你使用一个你不熟悉的编程语言来解题的时候,你可以向 Ta 解释你一直使用 Java / Python / C++ 来练习,你会解释清楚所有使用的库以及 API,大部分情况下面试官会允许的。如果这个岗位明确要求某一编程语言的经验,或者你已经使用了一种语言练习了一段时间,而且已经临近面试,那么你完全没有必要换语言来进行练习,确保你解释清楚你的思路以及代码即可。

遇到太难的题目可以申请换题吗?

这种情况通常出现在谷歌的面试,通过与几位谷歌面试官进行沟通之后,我们得到了比较一致的结论。可以申请,但是不要期望换过的题就会简单一点。至于会不会给面试官留下不好的印象,要看这题有多刁钻,是不是大部分人的盲点,例如题目是手写自平衡二叉搜索树或计算机图形的题目,极大部分人都不了解,而且现场想的话其实非常困难,换题就是一个合适的方案,如果题目考核的内容是常规内容,那么换题就会给面试官留下基础不稳的感觉。

现在的面试算法题是越来越难了吗?

是的,随着时间的推移,大家懂得如何更有效地训练后,整个行业的面试门槛都提高了。Moishe Lettvin - What I Learned Doing 250 Interviews at Google 提到,有一次 HR 选了数位求职者的面试反馈交由谷歌的招聘委员会商议是否批准 Offer,得到的答复是全部拒绝,但是 HR 选择的面试反馈正是这些招聘委员会成员当初面试谷歌的反馈!这也是你需要掌握其他内容中的特殊解法的原因。这些事情不单单发生在计算机行业,对于竞争强,高度训练化的行业,例如音乐,长跑等,都出现同样的情况,长跑奥运冠军约翰尼·海耶斯(Johnny Hayes)在 1908 年创造的世界纪录,如果换到今天的波士顿马拉松比赛中,只够刚刚赢得参赛资格。